#ifndef __TERRAIN_CONTENTS_GENERATOR_BED_WARS_H__
#define __TERRAIN_CONTENTS_GENERATOR_BED_WARS_H__

#include "Terrain/ITerrainContentsGenerator.h"
#include "Engine/Vector2.hpp"
#include <memory>

using namespace PocketSurvival::Engine;
using namespace PocketSurvival;

namespace PocketSurvival
{
    class SubsystemGameInfo;
}

namespace BedWars
{
    class TerrainContentsGeneratorBedWars : public ITerrainContentsGenerator
    {
    private:

        SubsystemGameInfo *subsystemGameInfo = nullptr;

    public:
        TerrainContentsGeneratorBedWars();
        ~TerrainContentsGeneratorBedWars();

    protected:
        virtual uint32_t getOceanLevel() override;

        virtual Vector3 findCoarseSpawnPosition() override;

        virtual float calculateOceanShoreDistance(float x, float z) override;

        virtual float calculateHeight(float x, float z) override;

        virtual int32_t calculateTemperature(float x, float z) override;

        virtual int32_t calculateHumidity(float x, float z) override;

        virtual float calculateMountainRangeFactor(float x, float z) override;

    public:

        virtual void generateChunkContentsPass1(TerrainChunk* chunk) override;

		virtual void generateChunkContentsPass2(TerrainChunk* chunk) override;

		virtual void generateChunkContentsPass3(TerrainChunk* chunk) override;

		virtual void generateChunkContentsPass4(TerrainChunk* chunk) override;
    };
    
}

#endif